#include <stdio.h>
#include "my_gpio.h"

/*
hal_gpio_init(18,GPIO_MODE_OUTPUT)
*/
void hal_gpio_init(uint8_t pin, gpio_mode_t mode)
{
    // GPIO初始化
    gpio_reset_pin(pin);
    // 设置GPIO口的模式
    gpio_set_direction(pin, mode);
}

void hal_gpio_outSet(uint8_t pin, uint8_t state)
{
    // 设置GPIO的电平
    int ret = 0;
    gpio_set_level(pin, state);
    if(ret!=0)
    {
        printf("set  gpio error pin %d \n",pin);
    }
}

uint8_t hal_gpio_get_level(uint8_t pin)
{
    return gpio_get_level(pin);
}

void gpio_output_init(uint8_t pin ,uint8_t pull_up_en,uint8_t pull_down_en) 
{
 gpio_config_t gpio_conf = {
        .pin_bit_mask = 1ULL << pin,
        .mode = GPIO_MODE_OUTPUT,
        .intr_type = GPIO_INTR_DISABLE,
        .pull_up_en = pull_up_en,
        .pull_down_en = pull_down_en,
    };
    int ret = 0;
    ret = gpio_config(&gpio_conf);
    if (ret!=0)
    {
        printf("gpio init error pin %d \n",pin);
    }
}

void gpio_intput_init(uint8_t pin ,uint8_t pull_up_en,uint8_t pull_down_en ,gpio_int_type_t intr_type)
{
 gpio_config_t gpio_conf = {
        .pin_bit_mask = 1ULL << pin,
        .mode = GPIO_MODE_INPUT,
        .intr_type = intr_type,
        .pull_up_en = pull_up_en,
        .pull_down_en = pull_down_en,
    };
    gpio_config(&gpio_conf);
}


void gpio_outputOD_init(uint8_t pin)
{
    gpio_config_t io_conf = {};
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_OUTPUT_OD;
    io_conf.pin_bit_mask = 1ULL << pin;
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 0;
    gpio_config(&io_conf);
}
